package com.personal.pojo;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

public class TCourseExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public TCourseExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        protected void addCriterionForJDBCDate(String condition, Date value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value.getTime()), property);
        }

        protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
            if (values == null || values.size() == 0) {
                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
            }
            List<java.sql.Date> dateList = new ArrayList<java.sql.Date>();
            Iterator<Date> iter = values.iterator();
            while (iter.hasNext()) {
                dateList.add(new java.sql.Date(iter.next().getTime()));
            }
            addCriterion(condition, dateList, property);
        }

        protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
        }

        public Criteria andCourseidIsNull() {
            addCriterion("courseId is null");
            return (Criteria) this;
        }

        public Criteria andCourseidIsNotNull() {
            addCriterion("courseId is not null");
            return (Criteria) this;
        }

        public Criteria andCourseidEqualTo(Integer value) {
            addCriterion("courseId =", value, "courseid");
            return (Criteria) this;
        }

        public Criteria andCourseidNotEqualTo(Integer value) {
            addCriterion("courseId <>", value, "courseid");
            return (Criteria) this;
        }

        public Criteria andCourseidGreaterThan(Integer value) {
            addCriterion("courseId >", value, "courseid");
            return (Criteria) this;
        }

        public Criteria andCourseidGreaterThanOrEqualTo(Integer value) {
            addCriterion("courseId >=", value, "courseid");
            return (Criteria) this;
        }

        public Criteria andCourseidLessThan(Integer value) {
            addCriterion("courseId <", value, "courseid");
            return (Criteria) this;
        }

        public Criteria andCourseidLessThanOrEqualTo(Integer value) {
            addCriterion("courseId <=", value, "courseid");
            return (Criteria) this;
        }

        public Criteria andCourseidIn(List<Integer> values) {
            addCriterion("courseId in", values, "courseid");
            return (Criteria) this;
        }

        public Criteria andCourseidNotIn(List<Integer> values) {
            addCriterion("courseId not in", values, "courseid");
            return (Criteria) this;
        }

        public Criteria andCourseidBetween(Integer value1, Integer value2) {
            addCriterion("courseId between", value1, value2, "courseid");
            return (Criteria) this;
        }

        public Criteria andCourseidNotBetween(Integer value1, Integer value2) {
            addCriterion("courseId not between", value1, value2, "courseid");
            return (Criteria) this;
        }

        public Criteria andCoursenameIsNull() {
            addCriterion("coursename is null");
            return (Criteria) this;
        }

        public Criteria andCoursenameIsNotNull() {
            addCriterion("coursename is not null");
            return (Criteria) this;
        }

        public Criteria andCoursenameEqualTo(String value) {
            addCriterion("coursename =", value, "coursename");
            return (Criteria) this;
        }

        public Criteria andCoursenameNotEqualTo(String value) {
            addCriterion("coursename <>", value, "coursename");
            return (Criteria) this;
        }

        public Criteria andCoursenameGreaterThan(String value) {
            addCriterion("coursename >", value, "coursename");
            return (Criteria) this;
        }

        public Criteria andCoursenameGreaterThanOrEqualTo(String value) {
            addCriterion("coursename >=", value, "coursename");
            return (Criteria) this;
        }

        public Criteria andCoursenameLessThan(String value) {
            addCriterion("coursename <", value, "coursename");
            return (Criteria) this;
        }

        public Criteria andCoursenameLessThanOrEqualTo(String value) {
            addCriterion("coursename <=", value, "coursename");
            return (Criteria) this;
        }

        public Criteria andCoursenameLike(String value) {
            addCriterion("coursename like", value, "coursename");
            return (Criteria) this;
        }

        public Criteria andCoursenameNotLike(String value) {
            addCriterion("coursename not like", value, "coursename");
            return (Criteria) this;
        }

        public Criteria andCoursenameIn(List<String> values) {
            addCriterion("coursename in", values, "coursename");
            return (Criteria) this;
        }

        public Criteria andCoursenameNotIn(List<String> values) {
            addCriterion("coursename not in", values, "coursename");
            return (Criteria) this;
        }

        public Criteria andCoursenameBetween(String value1, String value2) {
            addCriterion("coursename between", value1, value2, "coursename");
            return (Criteria) this;
        }

        public Criteria andCoursenameNotBetween(String value1, String value2) {
            addCriterion("coursename not between", value1, value2, "coursename");
            return (Criteria) this;
        }

        public Criteria andCoursemoneyIsNull() {
            addCriterion("courseMoney is null");
            return (Criteria) this;
        }

        public Criteria andCoursemoneyIsNotNull() {
            addCriterion("courseMoney is not null");
            return (Criteria) this;
        }

        public Criteria andCoursemoneyEqualTo(Float value) {
            addCriterion("courseMoney =", value, "coursemoney");
            return (Criteria) this;
        }

        public Criteria andCoursemoneyNotEqualTo(Float value) {
            addCriterion("courseMoney <>", value, "coursemoney");
            return (Criteria) this;
        }

        public Criteria andCoursemoneyGreaterThan(Float value) {
            addCriterion("courseMoney >", value, "coursemoney");
            return (Criteria) this;
        }

        public Criteria andCoursemoneyGreaterThanOrEqualTo(Float value) {
            addCriterion("courseMoney >=", value, "coursemoney");
            return (Criteria) this;
        }

        public Criteria andCoursemoneyLessThan(Float value) {
            addCriterion("courseMoney <", value, "coursemoney");
            return (Criteria) this;
        }

        public Criteria andCoursemoneyLessThanOrEqualTo(Float value) {
            addCriterion("courseMoney <=", value, "coursemoney");
            return (Criteria) this;
        }

        public Criteria andCoursemoneyIn(List<Float> values) {
            addCriterion("courseMoney in", values, "coursemoney");
            return (Criteria) this;
        }

        public Criteria andCoursemoneyNotIn(List<Float> values) {
            addCriterion("courseMoney not in", values, "coursemoney");
            return (Criteria) this;
        }

        public Criteria andCoursemoneyBetween(Float value1, Float value2) {
            addCriterion("courseMoney between", value1, value2, "coursemoney");
            return (Criteria) this;
        }

        public Criteria andCoursemoneyNotBetween(Float value1, Float value2) {
            addCriterion("courseMoney not between", value1, value2, "coursemoney");
            return (Criteria) this;
        }

        public Criteria andCoursestartIsNull() {
            addCriterion("coursestart is null");
            return (Criteria) this;
        }

        public Criteria andCoursestartIsNotNull() {
            addCriterion("coursestart is not null");
            return (Criteria) this;
        }

        public Criteria andCoursestartEqualTo(Date value) {
            addCriterionForJDBCDate("coursestart =", value, "coursestart");
            return (Criteria) this;
        }

        public Criteria andCoursestartNotEqualTo(Date value) {
            addCriterionForJDBCDate("coursestart <>", value, "coursestart");
            return (Criteria) this;
        }

        public Criteria andCoursestartGreaterThan(Date value) {
            addCriterionForJDBCDate("coursestart >", value, "coursestart");
            return (Criteria) this;
        }

        public Criteria andCoursestartGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("coursestart >=", value, "coursestart");
            return (Criteria) this;
        }

        public Criteria andCoursestartLessThan(Date value) {
            addCriterionForJDBCDate("coursestart <", value, "coursestart");
            return (Criteria) this;
        }

        public Criteria andCoursestartLessThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("coursestart <=", value, "coursestart");
            return (Criteria) this;
        }

        public Criteria andCoursestartIn(List<Date> values) {
            addCriterionForJDBCDate("coursestart in", values, "coursestart");
            return (Criteria) this;
        }

        public Criteria andCoursestartNotIn(List<Date> values) {
            addCriterionForJDBCDate("coursestart not in", values, "coursestart");
            return (Criteria) this;
        }

        public Criteria andCoursestartBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("coursestart between", value1, value2, "coursestart");
            return (Criteria) this;
        }

        public Criteria andCoursestartNotBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("coursestart not between", value1, value2, "coursestart");
            return (Criteria) this;
        }

        public Criteria andCourseendIsNull() {
            addCriterion("courseend is null");
            return (Criteria) this;
        }

        public Criteria andCourseendIsNotNull() {
            addCriterion("courseend is not null");
            return (Criteria) this;
        }

        public Criteria andCourseendEqualTo(Date value) {
            addCriterionForJDBCDate("courseend =", value, "courseend");
            return (Criteria) this;
        }

        public Criteria andCourseendNotEqualTo(Date value) {
            addCriterionForJDBCDate("courseend <>", value, "courseend");
            return (Criteria) this;
        }

        public Criteria andCourseendGreaterThan(Date value) {
            addCriterionForJDBCDate("courseend >", value, "courseend");
            return (Criteria) this;
        }

        public Criteria andCourseendGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("courseend >=", value, "courseend");
            return (Criteria) this;
        }

        public Criteria andCourseendLessThan(Date value) {
            addCriterionForJDBCDate("courseend <", value, "courseend");
            return (Criteria) this;
        }

        public Criteria andCourseendLessThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("courseend <=", value, "courseend");
            return (Criteria) this;
        }

        public Criteria andCourseendIn(List<Date> values) {
            addCriterionForJDBCDate("courseend in", values, "courseend");
            return (Criteria) this;
        }

        public Criteria andCourseendNotIn(List<Date> values) {
            addCriterionForJDBCDate("courseend not in", values, "courseend");
            return (Criteria) this;
        }

        public Criteria andCourseendBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("courseend between", value1, value2, "courseend");
            return (Criteria) this;
        }

        public Criteria andCourseendNotBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("courseend not between", value1, value2, "courseend");
            return (Criteria) this;
        }

        public Criteria andCoursecoachIsNull() {
            addCriterion("coursecoach is null");
            return (Criteria) this;
        }

        public Criteria andCoursecoachIsNotNull() {
            addCriterion("coursecoach is not null");
            return (Criteria) this;
        }

        public Criteria andCoursecoachEqualTo(Integer value) {
            addCriterion("coursecoach =", value, "coursecoach");
            return (Criteria) this;
        }

        public Criteria andCoursecoachNotEqualTo(Integer value) {
            addCriterion("coursecoach <>", value, "coursecoach");
            return (Criteria) this;
        }

        public Criteria andCoursecoachGreaterThan(Integer value) {
            addCriterion("coursecoach >", value, "coursecoach");
            return (Criteria) this;
        }

        public Criteria andCoursecoachGreaterThanOrEqualTo(Integer value) {
            addCriterion("coursecoach >=", value, "coursecoach");
            return (Criteria) this;
        }

        public Criteria andCoursecoachLessThan(Integer value) {
            addCriterion("coursecoach <", value, "coursecoach");
            return (Criteria) this;
        }

        public Criteria andCoursecoachLessThanOrEqualTo(Integer value) {
            addCriterion("coursecoach <=", value, "coursecoach");
            return (Criteria) this;
        }

        public Criteria andCoursecoachIn(List<Integer> values) {
            addCriterion("coursecoach in", values, "coursecoach");
            return (Criteria) this;
        }

        public Criteria andCoursecoachNotIn(List<Integer> values) {
            addCriterion("coursecoach not in", values, "coursecoach");
            return (Criteria) this;
        }

        public Criteria andCoursecoachBetween(Integer value1, Integer value2) {
            addCriterion("coursecoach between", value1, value2, "coursecoach");
            return (Criteria) this;
        }

        public Criteria andCoursecoachNotBetween(Integer value1, Integer value2) {
            addCriterion("coursecoach not between", value1, value2, "coursecoach");
            return (Criteria) this;
        }

        public Criteria andCourseclassroomIsNull() {
            addCriterion("courseclassroom is null");
            return (Criteria) this;
        }

        public Criteria andCourseclassroomIsNotNull() {
            addCriterion("courseclassroom is not null");
            return (Criteria) this;
        }

        public Criteria andCourseclassroomEqualTo(Integer value) {
            addCriterion("courseclassroom =", value, "courseclassroom");
            return (Criteria) this;
        }

        public Criteria andCourseclassroomNotEqualTo(Integer value) {
            addCriterion("courseclassroom <>", value, "courseclassroom");
            return (Criteria) this;
        }

        public Criteria andCourseclassroomGreaterThan(Integer value) {
            addCriterion("courseclassroom >", value, "courseclassroom");
            return (Criteria) this;
        }

        public Criteria andCourseclassroomGreaterThanOrEqualTo(Integer value) {
            addCriterion("courseclassroom >=", value, "courseclassroom");
            return (Criteria) this;
        }

        public Criteria andCourseclassroomLessThan(Integer value) {
            addCriterion("courseclassroom <", value, "courseclassroom");
            return (Criteria) this;
        }

        public Criteria andCourseclassroomLessThanOrEqualTo(Integer value) {
            addCriterion("courseclassroom <=", value, "courseclassroom");
            return (Criteria) this;
        }

        public Criteria andCourseclassroomIn(List<Integer> values) {
            addCriterion("courseclassroom in", values, "courseclassroom");
            return (Criteria) this;
        }

        public Criteria andCourseclassroomNotIn(List<Integer> values) {
            addCriterion("courseclassroom not in", values, "courseclassroom");
            return (Criteria) this;
        }

        public Criteria andCourseclassroomBetween(Integer value1, Integer value2) {
            addCriterion("courseclassroom between", value1, value2, "courseclassroom");
            return (Criteria) this;
        }

        public Criteria andCourseclassroomNotBetween(Integer value1, Integer value2) {
            addCriterion("courseclassroom not between", value1, value2, "courseclassroom");
            return (Criteria) this;
        }

        public Criteria andCoursememoIsNull() {
            addCriterion("courseMemo is null");
            return (Criteria) this;
        }

        public Criteria andCoursememoIsNotNull() {
            addCriterion("courseMemo is not null");
            return (Criteria) this;
        }

        public Criteria andCoursememoEqualTo(String value) {
            addCriterion("courseMemo =", value, "coursememo");
            return (Criteria) this;
        }

        public Criteria andCoursememoNotEqualTo(String value) {
            addCriterion("courseMemo <>", value, "coursememo");
            return (Criteria) this;
        }

        public Criteria andCoursememoGreaterThan(String value) {
            addCriterion("courseMemo >", value, "coursememo");
            return (Criteria) this;
        }

        public Criteria andCoursememoGreaterThanOrEqualTo(String value) {
            addCriterion("courseMemo >=", value, "coursememo");
            return (Criteria) this;
        }

        public Criteria andCoursememoLessThan(String value) {
            addCriterion("courseMemo <", value, "coursememo");
            return (Criteria) this;
        }

        public Criteria andCoursememoLessThanOrEqualTo(String value) {
            addCriterion("courseMemo <=", value, "coursememo");
            return (Criteria) this;
        }

        public Criteria andCoursememoLike(String value) {
            addCriterion("courseMemo like", value, "coursememo");
            return (Criteria) this;
        }

        public Criteria andCoursememoNotLike(String value) {
            addCriterion("courseMemo not like", value, "coursememo");
            return (Criteria) this;
        }

        public Criteria andCoursememoIn(List<String> values) {
            addCriterion("courseMemo in", values, "coursememo");
            return (Criteria) this;
        }

        public Criteria andCoursememoNotIn(List<String> values) {
            addCriterion("courseMemo not in", values, "coursememo");
            return (Criteria) this;
        }

        public Criteria andCoursememoBetween(String value1, String value2) {
            addCriterion("courseMemo between", value1, value2, "coursememo");
            return (Criteria) this;
        }

        public Criteria andCoursememoNotBetween(String value1, String value2) {
            addCriterion("courseMemo not between", value1, value2, "coursememo");
            return (Criteria) this;
        }

        public Criteria andCoursestatesIsNull() {
            addCriterion("coursestates is null");
            return (Criteria) this;
        }

        public Criteria andCoursestatesIsNotNull() {
            addCriterion("coursestates is not null");
            return (Criteria) this;
        }

        public Criteria andCoursestatesEqualTo(String value) {
            addCriterion("coursestates =", value, "coursestates");
            return (Criteria) this;
        }

        public Criteria andCoursestatesNotEqualTo(String value) {
            addCriterion("coursestates <>", value, "coursestates");
            return (Criteria) this;
        }

        public Criteria andCoursestatesGreaterThan(String value) {
            addCriterion("coursestates >", value, "coursestates");
            return (Criteria) this;
        }

        public Criteria andCoursestatesGreaterThanOrEqualTo(String value) {
            addCriterion("coursestates >=", value, "coursestates");
            return (Criteria) this;
        }

        public Criteria andCoursestatesLessThan(String value) {
            addCriterion("coursestates <", value, "coursestates");
            return (Criteria) this;
        }

        public Criteria andCoursestatesLessThanOrEqualTo(String value) {
            addCriterion("coursestates <=", value, "coursestates");
            return (Criteria) this;
        }

        public Criteria andCoursestatesLike(String value) {
            addCriterion("coursestates like", value, "coursestates");
            return (Criteria) this;
        }

        public Criteria andCoursestatesNotLike(String value) {
            addCriterion("coursestates not like", value, "coursestates");
            return (Criteria) this;
        }

        public Criteria andCoursestatesIn(List<String> values) {
            addCriterion("coursestates in", values, "coursestates");
            return (Criteria) this;
        }

        public Criteria andCoursestatesNotIn(List<String> values) {
            addCriterion("coursestates not in", values, "coursestates");
            return (Criteria) this;
        }

        public Criteria andCoursestatesBetween(String value1, String value2) {
            addCriterion("coursestates between", value1, value2, "coursestates");
            return (Criteria) this;
        }

        public Criteria andCoursestatesNotBetween(String value1, String value2) {
            addCriterion("coursestates not between", value1, value2, "coursestates");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}